package ca.qc.bdeb.info.pp2.tp2.controleur;

import ca.qc.bdeb.info.pp2.tp2.application.CriteresRechercheBean;
import ca.qc.bdeb.info.pp2.tp2.application.Facade;
import ca.qc.bdeb.info.pp2.tp2.application.ProprieteBean;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

public class CommandeAfficherProprietes implements Commande
{
    private String next;
    private String[] selectionListeQuartiers = null;
    private String selectionTypeMaison = null;

    public CommandeAfficherProprietes(String next)
    {
        this.next = next.toLowerCase();
    }

    @Override
    public String executer(HttpServletRequest req) throws CommandeException
    {
        Facade f = new Facade();

        getListeProprietes(req, f);

        return next;
    }

    /**
     * Permet de mettre toutes les options d'une propriété en paramètre.
     */
    private void getListeProprietes(HttpServletRequest req, Facade f)
    {
        List<ProprieteBean> proprietes = new ArrayList<ProprieteBean>();
        String[] nomQuartiers = null;
        String typeMaison = "";
        CriteresRechercheBean cr = new CriteresRechercheBean();

        //Placer le code de cette section dans la commande appropriée
        selectionListeQuartiers = req.getParameterValues(ConstantesWeb.QUARTIERS_CHOSIS);
        selectionTypeMaison = req.getParameter(ConstantesWeb.LISTE_TYPE_MAISONS);

        if (selectionListeQuartiers != null)
            nomQuartiers = f.getQuartiersChoisis(selectionListeQuartiers);

        if (!(selectionTypeMaison.equals("-1")))
            typeMaison = f.getNomTypeMaison(Integer.parseInt(selectionTypeMaison));

        cr.setQuartiers(nomQuartiers);
        cr.setPrixBas(req.getParameter(ConstantesWeb.VALEUR_PRIX_BAS));
        cr.setPrixHaut(req.getParameter(ConstantesWeb.VALEUR_PRIX_HAUT));
        cr.setNombreChambres(req.getParameter(ConstantesWeb.VALEUR_NOMBRE_CHAMBRES));
        cr.setNombreSallesBains(req.getParameter(ConstantesWeb.VALEUR_NOMBRE_SALLES_BAINS));
        cr.setNombreEtages(req.getParameter(ConstantesWeb.VALEUR_NOMBRE_ETAGES));
        cr.setNombrePieces(req.getParameter(ConstantesWeb.VALEUR_NOMBRE_PIECE));
        cr.setAnneeConstruction(req.getParameter(ConstantesWeb.VALEUR_ANNEE_CONSTRUCTION));


        cr.setPiscine(req.getParameter(ConstantesWeb.VALEUR_PISCINE));
        cr.setStationnement(req.getParameter(ConstantesWeb.VALEUR_STATIONNEMENT));
        cr.setSousSol(req.getParameter(ConstantesWeb.VALEUR_SOUS_SOL));
        cr.setGarage(req.getParameter(ConstantesWeb.VALEUR_GARAGE));

        cr.setTypeMaison(typeMaison);
        
        cr.setOrdrePrixDecroisant(req.getParameter(ConstantesWeb.VALEUR_PRIX_ORDRE));

        proprietes = f.getCollectionProprietes(cr);

        req.setAttribute(ConstantesWeb.VALEURS_LISTE_PROPRIETES, proprietes);
    }
}
